<?php

namespace SAPI\Fastcgi;

use SAPI\SAPI;
use PHP\LifeCycleFunction;

/**
 * Fastcgi接口
 *
 * 用于在web层下执行PHP脚本
 * 
 * 多进程模式,基于master/worker架构
 * 
 */
class PhpFpm extends SAPI
{

	/**
	 * 构造函数
	 */
	public function __construct()
	{
		// 模块初始化阶段
		LifeCycleFunction::php_module_startup();
	}

	/**
	 * 析构函数
	 */
	public function __destruct()
	{
		// 模块关闭阶段
		LifeCycleFunction::php_module_shutdown();
	}

	/**
	 * 入口函数
	 *
	 * SAPI 启动时执行一次模块初始化,然后每个请求只经历以下几个阶段:
	 * 	1. 请求初始化
	 * 	2. 执行请求脚本
	 * 	3. 请求关闭 
	 * SAPI 关闭时经历模块关闭阶段
	 * 
	 */
	public function main()
	{
		// 请求初始化阶段
		LifeCycleFunction::php_request_startup();
		// 执行脚本阶段
		LifeCycleFunction::php_execute_script();
		// 请求关闭阶段
		LifeCycleFunction::php_request_shutdown();
	}
	
}

